package com.iris.live.services.data.models;

import com.fasterxml.jackson.annotation.JsonProperty;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

import javax.persistence.*;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;

/**
 * Created by xin on 2016/8/2.
 */
@SuppressWarnings("JpaDataSourceORMInspection")
@Entity
@Table(name = "LSH套餐信息", schema = "sg_lsh", catalog = "")
public class Lsh套餐信息Model {
    private Integer 套餐编号;
    private Integer 分类编号;
    private String 创建方;
    private Integer nc编号;
    private String 产品编号;
    private String 产品名称;
    private String 厂商;
    private String 功能;
    private String 特征;
    private String 好处;
    private String 是否套餐;
    private String 限量状态;
    private String 限量数量;
    private Date 套餐开始日期;
    private Date 套餐结束日期;
    private String 集团采购价未税;
    private String 集团采购价含税;
    private String 集团毛利率;
    private String 套餐销售原价;
    private String 套餐销售价含税;
    private String 套餐销售价未税;
    private String 是否统一折扣;
    private String 套餐折扣;
    private String 套餐采购价未税;
    private String 套餐采购价含税;
    private String 套餐毛利;
    private String 套餐毛利率;
    private String 启用状态;
    private Timestamp 创建时间;
    private String 更新账号;
    private Timestamp 更新时间;
    private List<Lsh精品信息Model> lsh精品信息ModelList;
    //private List<Lsh套餐图片Model> lsh套餐图片ModelList;

    @OneToMany(fetch = FetchType.EAGER) @Fetch(FetchMode.SELECT)
    @JoinTable(name = "LSH精品套餐详细",
            joinColumns = {
                    @JoinColumn(name = "套餐编号", referencedColumnName = "套餐编号")
            },
            inverseJoinColumns = {
                    @JoinColumn(name = "精品编号", referencedColumnName = "精品编号")
            }
    )
    @JsonProperty("精品")
    public List<Lsh精品信息Model> getLsh精品信息ModelList() {
        return lsh精品信息ModelList;
    }

    public void setLsh精品信息ModelList(List<Lsh精品信息Model> lsh精品信息ModelList) {
        this.lsh精品信息ModelList = lsh精品信息ModelList;
    }

//    @OneToMany(fetch = FetchType.EAGER) @Fetch(FetchMode.SELECT)
//    @JoinColumn(referencedColumnName = "套餐编号", name = "套餐编号")
//    @JsonProperty("图片")
//    public List<Lsh套餐图片Model> getLsh套餐图片ModelList() {
//        return lsh套餐图片ModelList;
//    }
//
//    public void setLsh套餐图片ModelList(List<Lsh套餐图片Model> lsh套餐图片ModelList) {
//        this.lsh套餐图片ModelList = lsh套餐图片ModelList;
//    }

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "套餐编号")
    public Integer get套餐编号() {
        return 套餐编号;
    }

    public void set套餐编号(Integer 套餐编号) {
        this.套餐编号 = 套餐编号;
    }

    @Basic
    @Column(name = "分类编号")
    public Integer get分类编号() {
        return 分类编号;
    }

    public void set分类编号(Integer 分类编号) {
        this.分类编号 = 分类编号;
    }

    @Basic
    @Column(name = "创建方")
    public String get创建方() {
        return 创建方;
    }

    public void set创建方(String 创建方) {
        this.创建方 = 创建方;
    }

    @Basic
    @Column(name = "NC编号")
    @JsonProperty("NC编号")
    public Integer getNc编号() {
        return nc编号;
    }

    public void setNc编号(Integer nc编号) {
        this.nc编号 = nc编号;
    }

    @Basic
    @Column(name = "产品编号")
    public String get产品编号() {
        return 产品编号;
    }

    public void set产品编号(String 产品编号) {
        this.产品编号 = 产品编号;
    }

    @Basic
    @Column(name = "产品名称")
    public String get产品名称() {
        return 产品名称;
    }

    public void set产品名称(String 产品名称) {
        this.产品名称 = 产品名称;
    }

    @Basic
    @Column(name = "厂商")
    public String get厂商() {
        return 厂商;
    }

    public void set厂商(String 厂商) {
        this.厂商 = 厂商;
    }

    @Basic
    @Column(name = "功能")
    public String get功能() {
        return 功能;
    }

    public void set功能(String 功能) {
        this.功能 = 功能;
    }

    @Basic
    @Column(name = "特征")
    public String get特征() {
        return 特征;
    }

    public void set特征(String 特征) {
        this.特征 = 特征;
    }

    @Basic
    @Column(name = "好处")
    public String get好处() {
        return 好处;
    }

    public void set好处(String 好处) {
        this.好处 = 好处;
    }

    @Basic
    @Column(name = "是否套餐")
    public String get是否套餐() {
        return 是否套餐;
    }

    public void set是否套餐(String 是否套餐) {
        this.是否套餐 = 是否套餐;
    }

    @Basic
    @Column(name = "限量状态")
    public String get限量状态() {
        return 限量状态;
    }

    public void set限量状态(String 限量状态) {
        this.限量状态 = 限量状态;
    }

    @Basic
    @Column(name = "限量数量")
    public String get限量数量() {
        return 限量数量;
    }

    public void set限量数量(String 限量数量) {
        this.限量数量 = 限量数量;
    }

    @Basic
    @Column(name = "套餐开始日期")
    public Date get套餐开始日期() {
        return 套餐开始日期;
    }

    public void set套餐开始日期(Date 套餐开始日期) {
        this.套餐开始日期 = 套餐开始日期;
    }

    @Basic
    @Column(name = "套餐结束日期")
    public Date get套餐结束日期() {
        return 套餐结束日期;
    }

    public void set套餐结束日期(Date 套餐结束日期) {
        this.套餐结束日期 = 套餐结束日期;
    }

    @Basic
    @Column(name = "集团采购价未税")
    public String get集团采购价未税() {
        return 集团采购价未税;
    }

    public void set集团采购价未税(String 集团采购价未税) {
        this.集团采购价未税 = 集团采购价未税;
    }

    @Basic
    @Column(name = "集团采购价含税")
    public String get集团采购价含税() {
        return 集团采购价含税;
    }

    public void set集团采购价含税(String 集团采购价含税) {
        this.集团采购价含税 = 集团采购价含税;
    }

    @Basic
    @Column(name = "集团毛利率")
    public String get集团毛利率() {
        return 集团毛利率;
    }

    public void set集团毛利率(String 集团毛利率) {
        this.集团毛利率 = 集团毛利率;
    }

    @Basic
    @Column(name = "套餐销售原价")
    public String get套餐销售原价() {
        return 套餐销售原价;
    }

    public void set套餐销售原价(String 套餐销售原价) {
        this.套餐销售原价 = 套餐销售原价;
    }

    @Basic
    @Column(name = "套餐销售价含税")
    public String get套餐销售价含税() {
        return 套餐销售价含税;
    }

    public void set套餐销售价含税(String 套餐销售价含税) {
        this.套餐销售价含税 = 套餐销售价含税;
    }

    @Basic
    @Column(name = "套餐销售价未税")
    public String get套餐销售价未税() {
        return 套餐销售价未税;
    }

    public void set套餐销售价未税(String 套餐销售价未税) {
        this.套餐销售价未税 = 套餐销售价未税;
    }

    @Basic
    @Column(name = "是否统一折扣")
    public String get是否统一折扣() {
        return 是否统一折扣;
    }

    public void set是否统一折扣(String 是否统一折扣) {
        this.是否统一折扣 = 是否统一折扣;
    }

    @Basic
    @Column(name = "套餐折扣")
    public String get套餐折扣() {
        return 套餐折扣;
    }

    public void set套餐折扣(String 套餐折扣) {
        this.套餐折扣 = 套餐折扣;
    }

    @Basic
    @Column(name = "套餐采购价未税")
    public String get套餐采购价未税() {
        return 套餐采购价未税;
    }

    public void set套餐采购价未税(String 套餐采购价未税) {
        this.套餐采购价未税 = 套餐采购价未税;
    }

    @Basic
    @Column(name = "套餐采购价含税")
    public String get套餐采购价含税() {
        return 套餐采购价含税;
    }

    public void set套餐采购价含税(String 套餐采购价含税) {
        this.套餐采购价含税 = 套餐采购价含税;
    }

    @Basic
    @Column(name = "套餐毛利")
    public String get套餐毛利() {
        return 套餐毛利;
    }

    public void set套餐毛利(String 套餐毛利) {
        this.套餐毛利 = 套餐毛利;
    }

    @Basic
    @Column(name = "套餐毛利率")
    public String get套餐毛利率() {
        return 套餐毛利率;
    }

    public void set套餐毛利率(String 套餐毛利率) {
        this.套餐毛利率 = 套餐毛利率;
    }

    @Basic
    @Column(name = "启用状态")
    public String get启用状态() {
        return 启用状态;
    }

    public void set启用状态(String 启用状态) {
        this.启用状态 = 启用状态;
    }

    @Basic
    @Column(name = "创建时间")
    public Timestamp get创建时间() {
        return 创建时间;
    }

    public void set创建时间(Timestamp 创建时间) {
        this.创建时间 = 创建时间;
    }

    @Basic
    @Column(name = "更新账号")
    public String get更新账号() {
        return 更新账号;
    }

    public void set更新账号(String 更新账号) {
        this.更新账号 = 更新账号;
    }

    @Basic
    @Column(name = "更新时间")
    public Timestamp get更新时间() {
        return 更新时间;
    }

    public void set更新时间(Timestamp 更新时间) {
        this.更新时间 = 更新时间;
    }

    @PrePersist
    public void onPrePersist() {
        this.set创建时间(new Timestamp(System.currentTimeMillis()));
        this.set更新时间(new Timestamp(System.currentTimeMillis()));
    }

    @PreUpdate
    public void onPreUpdate() {
        this.set更新时间(new Timestamp(System.currentTimeMillis()));
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Lsh套餐信息Model that = (Lsh套餐信息Model) o;

        if (套餐编号 != null ? !套餐编号.equals(that.套餐编号) : that.套餐编号 != null) return false;
        if (分类编号 != null ? !分类编号.equals(that.分类编号) : that.分类编号 != null) return false;
        if (创建方 != null ? !创建方.equals(that.创建方) : that.创建方 != null) return false;
        if (nc编号 != null ? !nc编号.equals(that.nc编号) : that.nc编号 != null) return false;
        if (产品编号 != null ? !产品编号.equals(that.产品编号) : that.产品编号 != null) return false;
        if (产品名称 != null ? !产品名称.equals(that.产品名称) : that.产品名称 != null) return false;
        if (厂商 != null ? !厂商.equals(that.厂商) : that.厂商 != null) return false;
        if (功能 != null ? !功能.equals(that.功能) : that.功能 != null) return false;
        if (特征 != null ? !特征.equals(that.特征) : that.特征 != null) return false;
        if (好处 != null ? !好处.equals(that.好处) : that.好处 != null) return false;
        if (是否套餐 != null ? !是否套餐.equals(that.是否套餐) : that.是否套餐 != null) return false;
        if (限量状态 != null ? !限量状态.equals(that.限量状态) : that.限量状态 != null) return false;
        if (限量数量 != null ? !限量数量.equals(that.限量数量) : that.限量数量 != null) return false;
        if (套餐开始日期 != null ? !套餐开始日期.equals(that.套餐开始日期) : that.套餐开始日期 != null) return false;
        if (套餐结束日期 != null ? !套餐结束日期.equals(that.套餐结束日期) : that.套餐结束日期 != null) return false;
        if (集团采购价未税 != null ? !集团采购价未税.equals(that.集团采购价未税) : that.集团采购价未税 != null) return false;
        if (集团采购价含税 != null ? !集团采购价含税.equals(that.集团采购价含税) : that.集团采购价含税 != null) return false;
        if (集团毛利率 != null ? !集团毛利率.equals(that.集团毛利率) : that.集团毛利率 != null) return false;
        if (套餐销售原价 != null ? !套餐销售原价.equals(that.套餐销售原价) : that.套餐销售原价 != null) return false;
        if (套餐销售价含税 != null ? !套餐销售价含税.equals(that.套餐销售价含税) : that.套餐销售价含税 != null) return false;
        if (套餐销售价未税 != null ? !套餐销售价未税.equals(that.套餐销售价未税) : that.套餐销售价未税 != null) return false;
        if (是否统一折扣 != null ? !是否统一折扣.equals(that.是否统一折扣) : that.是否统一折扣 != null) return false;
        if (套餐折扣 != null ? !套餐折扣.equals(that.套餐折扣) : that.套餐折扣 != null) return false;
        if (套餐采购价未税 != null ? !套餐采购价未税.equals(that.套餐采购价未税) : that.套餐采购价未税 != null) return false;
        if (套餐采购价含税 != null ? !套餐采购价含税.equals(that.套餐采购价含税) : that.套餐采购价含税 != null) return false;
        if (套餐毛利 != null ? !套餐毛利.equals(that.套餐毛利) : that.套餐毛利 != null) return false;
        if (套餐毛利率 != null ? !套餐毛利率.equals(that.套餐毛利率) : that.套餐毛利率 != null) return false;
        if (启用状态 != null ? !启用状态.equals(that.启用状态) : that.启用状态 != null) return false;
        if (创建时间 != null ? !创建时间.equals(that.创建时间) : that.创建时间 != null) return false;
        if (更新账号 != null ? !更新账号.equals(that.更新账号) : that.更新账号 != null) return false;
        if (更新时间 != null ? !更新时间.equals(that.更新时间) : that.更新时间 != null) return false;

        return true;
    }

    @Override
    public int hashCode() {
        int result = 套餐编号 != null ? 套餐编号.hashCode() : 0;
        result = 31 * result + (分类编号 != null ? 分类编号.hashCode() : 0);
        result = 31 * result + (创建方 != null ? 创建方.hashCode() : 0);
        result = 31 * result + (nc编号 != null ? nc编号.hashCode() : 0);
        result = 31 * result + (产品编号 != null ? 产品编号.hashCode() : 0);
        result = 31 * result + (产品名称 != null ? 产品名称.hashCode() : 0);
        result = 31 * result + (厂商 != null ? 厂商.hashCode() : 0);
        result = 31 * result + (功能 != null ? 功能.hashCode() : 0);
        result = 31 * result + (特征 != null ? 特征.hashCode() : 0);
        result = 31 * result + (好处 != null ? 好处.hashCode() : 0);
        result = 31 * result + (是否套餐 != null ? 是否套餐.hashCode() : 0);
        result = 31 * result + (限量状态 != null ? 限量状态.hashCode() : 0);
        result = 31 * result + (限量数量 != null ? 限量数量.hashCode() : 0);
        result = 31 * result + (套餐开始日期 != null ? 套餐开始日期.hashCode() : 0);
        result = 31 * result + (套餐结束日期 != null ? 套餐结束日期.hashCode() : 0);
        result = 31 * result + (集团采购价未税 != null ? 集团采购价未税.hashCode() : 0);
        result = 31 * result + (集团采购价含税 != null ? 集团采购价含税.hashCode() : 0);
        result = 31 * result + (集团毛利率 != null ? 集团毛利率.hashCode() : 0);
        result = 31 * result + (套餐销售原价 != null ? 套餐销售原价.hashCode() : 0);
        result = 31 * result + (套餐销售价含税 != null ? 套餐销售价含税.hashCode() : 0);
        result = 31 * result + (套餐销售价未税 != null ? 套餐销售价未税.hashCode() : 0);
        result = 31 * result + (是否统一折扣 != null ? 是否统一折扣.hashCode() : 0);
        result = 31 * result + (套餐折扣 != null ? 套餐折扣.hashCode() : 0);
        result = 31 * result + (套餐采购价未税 != null ? 套餐采购价未税.hashCode() : 0);
        result = 31 * result + (套餐采购价含税 != null ? 套餐采购价含税.hashCode() : 0);
        result = 31 * result + (套餐毛利 != null ? 套餐毛利.hashCode() : 0);
        result = 31 * result + (套餐毛利率 != null ? 套餐毛利率.hashCode() : 0);
        result = 31 * result + (启用状态 != null ? 启用状态.hashCode() : 0);
        result = 31 * result + (创建时间 != null ? 创建时间.hashCode() : 0);
        result = 31 * result + (更新账号 != null ? 更新账号.hashCode() : 0);
        result = 31 * result + (更新时间 != null ? 更新时间.hashCode() : 0);
        return result;
    }
}
